﻿using System;
using Microsoft.Xna.Framework;

namespace Narwhunderful.Aphelia.Framework
{

    public interface IUpdatableComponent
    {

        event EventHandler<EventArgs> UpdateOrderChanged;
        event EventHandler<EventArgs> EnabledChanged;

        Game Game { get; }

        bool IsEnabled { get; set; }
        int UpdateOrder { get; set; }
        bool AlwaysNeedsUpdate { get; set; }
        bool NeedsUpdate { get; set; }

        bool CanUpdate(GameTime gameTime);
        void Update(GameTime gameTime);
        
    }

}
